package org.csy.generic.test05;

import java.lang.reflect.Array;
import java.util.Arrays;

/**
 * 泛型数组
 * 泛型数组不能实例化，只能使用setter赋值或使用反射赋值
 * @author CSY
 * @date 2025 - 03 - 26
 */
public class GenericTest<T> {
    //错误
//    T[] arr = new T[4];
    T[] arr;

    public GenericTest(){}

    //解决方案二 - 通过反射 + 构造方法来传值
    public GenericTest(Class<T> clazz,int length) {
        Object object = Array.newInstance(clazz, length);
        this.arr = (T[]) object;
    }

    public T[] getArr() {
        return arr;
    }

    public void setArr(T[] arr) {
        this.arr = arr;
    }

    @Override
    public String toString() {
        return "GenericTest{" +
                "arr=" + Arrays.toString(arr) +
                '}';
    }
}
